package fiuba.algo3.vista;

import java.awt.Color;
import java.awt.Graphics;

import fiuba.algo3.mapa.*;
import fiuba.algo3.partida.Partida;

public class PintorMapa {

	void pintarMapa(Graphics g, Partida unaPartida, int margen) {
		PintorEsquina pintorEsquina = new PintorEsquina();
		PintorCalle pintorCalle = new PintorCalle();

		Mapa mapa = unaPartida.getMapa();
		int tamanio = mapa.getTamanio();
		
		g.setColor(Color.ORANGE);

		g.fillRect(margen - PintorEscenario.ANCHO_BORDE, margen
				- PintorEscenario.ANCHO_BORDE, PintorEscenario.ANCHO_BORDE
				+ mapa.getTamanio() * PintorEscenario.ANCHO_ESQUINA
				+ (mapa.getTamanio() - 1) * PintorEscenario.LARGO_CALLE
				+ PintorEscenario.ANCHO_BORDE, PintorEscenario.ANCHO_BORDE);

		g.fillRect(margen - PintorEscenario.ANCHO_BORDE, margen
				- PintorEscenario.ANCHO_BORDE + mapa.getTamanio()
				* PintorEscenario.ANCHO_ESQUINA + (mapa.getTamanio() - 1)
				* PintorEscenario.LARGO_CALLE + PintorEscenario.ANCHO_BORDE,
				PintorEscenario.ANCHO_BORDE + mapa.getTamanio()
						* PintorEscenario.ANCHO_ESQUINA
						+ (mapa.getTamanio() - 1) * PintorEscenario.LARGO_CALLE
						+ PintorEscenario.ANCHO_BORDE,
				PintorEscenario.ANCHO_BORDE);

		g.fillRect(margen - PintorEscenario.ANCHO_BORDE, margen - PintorEscenario.ANCHO_BORDE, PintorEscenario.ANCHO_BORDE,
				PintorEscenario.ANCHO_BORDE + mapa.getTamanio()
						* PintorEscenario.ANCHO_ESQUINA
						+ (mapa.getTamanio() - 1) * PintorEscenario.LARGO_CALLE
						+ PintorEscenario.ANCHO_BORDE);

		g.fillRect(margen - PintorEscenario.ANCHO_BORDE + mapa.getTamanio()
				* PintorEscenario.ANCHO_ESQUINA + (mapa.getTamanio() - 1)
				* PintorEscenario.LARGO_CALLE + PintorEscenario.ANCHO_BORDE,
				margen - PintorEscenario.ANCHO_BORDE, PintorEscenario.ANCHO_BORDE,
				PintorEscenario.ANCHO_BORDE + mapa.getTamanio()
						* PintorEscenario.ANCHO_ESQUINA
						+ (mapa.getTamanio() - 1) * PintorEscenario.LARGO_CALLE
						+ PintorEscenario.ANCHO_BORDE);

		// margen = 250 - (ANCHO_ESQUINA*tamanio + LARGO_CALLE * (tamanio
		// -1))/2;

		g.setColor(Color.BLACK);
		g.fillRect(margen, margen, (PintorEscenario.ANCHO_ESQUINA * tamanio)
				+ (PintorEscenario.LARGO_CALLE * (tamanio - 1)),
				(PintorEscenario.ANCHO_ESQUINA * tamanio)
						+ (PintorEscenario.LARGO_CALLE * (tamanio - 1)));

		for (int i = 0; i < tamanio; i++) {
			for (int j = 0; j < tamanio; j++) {
				Esquina esquinaActual = mapa.getEsquinaEnPosicion(i, j);
				

				if (esquinaActual.tieneCalleNorte()
						&& unaPartida.calleEsVisible(esquinaActual
								.getCalleNorte())) {
					pintorCalle
							.pintar(g, esquinaActual.getCalleNorte(), margen);
				}

				if (esquinaActual.tieneCalleEste()
						&& unaPartida.calleEsVisible(esquinaActual
								.getCalleEste())) {
					pintorCalle.pintar(g, esquinaActual.getCalleEste(), margen);
				}

				if (esquinaActual.tieneCalleSur()
						&& unaPartida.calleEsVisible(esquinaActual
								.getCalleSur())) {
					pintorCalle.pintar(g, esquinaActual.getCalleSur(), margen);
				}

				if (esquinaActual.tieneCalleOeste()
						&& unaPartida.calleEsVisible(esquinaActual
								.getCalleOeste())) {
					pintorCalle
							.pintar(g, esquinaActual.getCalleOeste(), margen);
				}
				if (unaPartida.esquinaEsVisible(esquinaActual)) {
					pintorEsquina.pintar(g, esquinaActual, margen);
				}
			}
		}

		
	}

}
